Skip to content

Create Week1 Mission1, 2, 3#7

Merged
umckee5696 merged 2 commits intomainfrom
Week01/Yido
Mar 16, 2026
Merged

Create Week1 Mission1, 2, 3#7
umckee5696 merged 2 commits intomainfrom
Week01/Yido

Conversation

@umckee5696
Copy link
Copy Markdown
Contributor

@umckee5696 umckee5696 commented Mar 14, 2026

📝 미션 번호

1주차 Misson 1, 2, 3

📋 구현 사항

  • 감정 우표 단일 화면 UI 구현

  • 감정 우표 아이콘 클릭 시 해당 아이콘 하단 텍스트만 색상이 변경되도록 구현

  • 선택된 감정만 강조되도록 처리하고 다른 텍스트는 기본 색상 유지

📎 스크린샷

012
345

✅ 체크리스트

  • [v] Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • [v] 에뮬레이터 또는 실제 기기에서 정상 동작하나요?
  • [v] 불필요한 주석 및 Log가 제거되었나요?

🤔 질문 사항

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Android app project under Week01/Yido for the Week 1 mission, implementing a single-screen “emotion stamp” UI where selecting an emotion highlights its corresponding label.

Changes:

  • Added Gradle project scaffolding (settings/build scripts, wrapper, version catalog).
  • Implemented the main screen layout/resources (icons, theme, manifest) and selection behavior in MainActivity.
  • Added submission README and screenshots, plus Android Studio project files.

Reviewed changes

Copilot reviewed 34 out of 57 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
Week01/Yido/settings.gradle.kts Sets up plugin/dependency repositories and includes the :app module.
Week01/Yido/README.md Describes implemented mission requirements and includes screenshots.
Week01/Yido/gradlew.bat Windows Gradle wrapper script.
Week01/Yido/gradlew POSIX Gradle wrapper script.
Week01/Yido/gradle/wrapper/gradle-wrapper.properties Configures Gradle wrapper distribution.
Week01/Yido/gradle/libs.versions.toml Version catalog for dependencies/plugins.
Week01/Yido/gradle/gradle-daemon-jvm.properties Generated Gradle daemon JVM/toolchain configuration.
Week01/Yido/gradle.properties Project-wide Gradle settings.
Week01/Yido/build.gradle.kts Top-level Gradle build configuration.
Week01/Yido/app/src/test/java/com/example/yido/ExampleUnitTest.kt Default unit test scaffold.
Week01/Yido/app/src/main/res/xml/data_extraction_rules.xml Backup/data extraction rules scaffold.
Week01/Yido/app/src/main/res/xml/backup_rules.xml Backup rules scaffold.
Week01/Yido/app/src/main/res/values/themes.xml Day theme resources.
Week01/Yido/app/src/main/res/values/strings.xml String resources (app name).
Week01/Yido/app/src/main/res/values/colors.xml Color resources.
Week01/Yido/app/src/main/res/values-night/themes.xml Night theme resources.
Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp Launcher icon asset (xxxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp Round launcher icon asset (xxxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp Launcher icon asset (xxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp Round launcher icon asset (xxhdpi).
Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher.webp Launcher icon asset (xhdpi).
Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp Round launcher icon asset (xhdpi).
Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher.webp Launcher icon asset (mdpi).
Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp Round launcher icon asset (mdpi).
Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher.webp Launcher icon asset (hdpi).
Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp Round launcher icon asset (hdpi).
Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml Adaptive launcher icon definition.
Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml Adaptive round launcher icon definition.
Week01/Yido/app/src/main/res/layout/activity_main.xml Main screen UI layout for emotion selection.
Week01/Yido/app/src/main/res/drawable/ic_launcher_foreground.xml Foreground vector for adaptive icon.
Week01/Yido/app/src/main/res/drawable/ic_launcher_background.xml Background vector for adaptive icon.
Week01/Yido/app/src/main/res/drawable/ic_face5.xml Emotion stamp drawable asset.
Week01/Yido/app/src/main/res/drawable/ic_face4.xml Emotion stamp drawable asset.
Week01/Yido/app/src/main/res/drawable/ic_face3.xml Emotion stamp drawable asset.
Week01/Yido/app/src/main/res/drawable/ic_face2.xml Emotion stamp drawable asset.
Week01/Yido/app/src/main/res/drawable/ic_face1.xml Emotion stamp drawable asset.
Week01/Yido/app/src/main/res/drawable/ic_back.xml Back icon drawable asset.
Week01/Yido/app/src/main/java/com/example/yido/MainActivity.kt Implements click handling to highlight the selected emotion label and back behavior.
Week01/Yido/app/src/main/AndroidManifest.xml Declares the app and launcher MainActivity.
Week01/Yido/app/src/androidTest/java/com/example/yido/ExampleInstrumentedTest.kt Default instrumented test scaffold.
Week01/Yido/app/proguard-rules.pro Proguard rules scaffold.
Week01/Yido/app/build.gradle.kts Android application module build configuration.
Week01/Yido/app/.gitignore Ignores app build outputs.
Week01/Yido/.gitignore Ignores Gradle/IDE/build artifacts within the module directory.
.idea/vcs.xml IDE VCS mapping configuration.
.idea/modules.xml IDE module configuration.
.idea/misc.xml IDE project JDK/language level configuration.
.idea/markdown.xml IDE Markdown plugin configuration.
.idea/caches/deviceStreaming.xml IDE device streaming cache data.
Files not reviewed (5)
  • .idea/caches/deviceStreaming.xml: Language not supported
  • .idea/markdown.xml: Language not supported
  • .idea/misc.xml: Language not supported
  • .idea/modules.xml: Language not supported
  • .idea/vcs.xml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +115 to +119
esac

CLASSPATH="\\\"\\\""


Comment on lines +70 to +77
:execute
@rem Setup the command line

set CLASSPATH=


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
@@ -0,0 +1,52 @@
plugins {
alias(libs.plugins.android.application)
Comment on lines +7 to +11
compileSdk {
version = release(36) {
minorApiLevel = 1
}
}
Comment on lines +21 to +33
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:gravity="center"
android:text="오늘 하루는 어땠나요?"
android:textColor="#000000"
android:textSize="38sp"
android:fontFamily="@font/gangwon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Comment on lines +154 to +162
<ImageView
android:id="@+id/ic_face5"
android:layout_width="44dp"
android:layout_height="48.4dp"
android:layout_marginTop="20dp"
android:src="@drawable/ic_face5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_face4" />
Comment on lines +19 to +55
binding.icFace1.setOnClickListener {
selectEmotion(binding.textFace1, Color.parseColor("#FFBB00"))
}

binding.icFace2.setOnClickListener {
selectEmotion(binding.textFace2, Color.parseColor("#00BFFF"))
}

binding.icFace3.setOnClickListener {
selectEmotion(binding.textFace3, Color.parseColor("#9370DB"))
}

binding.icFace4.setOnClickListener {
selectEmotion(binding.textFace4, Color.parseColor("#32CD32"))
}

binding.icFace5.setOnClickListener {
selectEmotion(binding.textFace5, Color.parseColor("#FF0000"))
}

binding.icBack.setOnClickListener {
finish()
}
}

private fun selectEmotion(selectedText: TextView, color: Int) {
val textViews = listOf(
binding.textFace1,
binding.textFace2,
binding.textFace3,
binding.textFace4,
binding.textFace5
)

for (textView in textViews) {
textView.setTextColor(Color.BLACK)
}
Comment on lines +1 to +6
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceStreaming">
<option name="deviceSelectionList">
<list>
<PersistentDeviceSelectionData>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Android.iml" filepath="$PROJECT_DIR$/.idea/Android.iml" />
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Android app project for the Week01 “Yido” mission, implementing a single-screen “emotion stamp” UI with click-to-highlight behavior and the required Gradle/Android project scaffolding.

Changes:

  • Introduces a full Android Gradle project structure (wrapper, version catalog, app module).
  • Implements the main UI layout and MainActivity click-handling to highlight the selected emotion label.
  • Adds app resources (icons, vectors, themes) and basic README documentation with screenshots.

Reviewed changes

Copilot reviewed 34 out of 57 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
Week01/Yido/settings.gradle.kts Sets up plugin/dependency repositories and includes :app.
Week01/Yido/README.md Documents mission requirements and provides screenshots.
Week01/Yido/gradlew.bat Adds Windows Gradle wrapper script.
Week01/Yido/gradlew Adds POSIX Gradle wrapper script.
Week01/Yido/gradle/wrapper/gradle-wrapper.properties Pins Gradle distribution for the wrapper.
Week01/Yido/gradle/libs.versions.toml Defines version catalog for dependencies/plugins.
Week01/Yido/gradle/gradle-daemon-jvm.properties Gradle daemon/toolchain configuration file.
Week01/Yido/gradle.properties Project-level Gradle settings (JVM args, Kotlin style).
Week01/Yido/build.gradle.kts Top-level Gradle plugin configuration.
Week01/Yido/app/build.gradle.kts App module build config, dependencies, and view binding enablement.
Week01/Yido/app/proguard-rules.pro Default ProGuard rules template.
Week01/Yido/app/.gitignore Ignores module build output.
Week01/Yido/.gitignore Ignores common Android Studio/Gradle artifacts (within this project folder).
Week01/Yido/app/src/main/AndroidManifest.xml Declares app + launcher MainActivity.
Week01/Yido/app/src/main/java/com/example/yido/MainActivity.kt Implements emotion selection and back navigation behavior.
Week01/Yido/app/src/main/res/layout/activity_main.xml Defines the single-screen UI (text + emotion icons).
Week01/Yido/app/src/main/res/values/strings.xml Declares app name string.
Week01/Yido/app/src/main/res/values/colors.xml Adds basic black/white colors.
Week01/Yido/app/src/main/res/values/themes.xml DayNight Material3 theme configuration.
Week01/Yido/app/src/main/res/values-night/themes.xml Night theme configuration.
Week01/Yido/app/src/main/res/xml/backup_rules.xml Backup rules template.
Week01/Yido/app/src/main/res/xml/data_extraction_rules.xml Data extraction rules template.
Week01/Yido/app/src/main/res/drawable/ic_back.xml Vector back icon used in the UI.
Week01/Yido/app/src/main/res/drawable/ic_face1.xml Vector emotion stamp icon 1.
Week01/Yido/app/src/main/res/drawable/ic_face2.xml Vector emotion stamp icon 2.
Week01/Yido/app/src/main/res/drawable/ic_face3.xml Vector emotion stamp icon 3.
Week01/Yido/app/src/main/res/drawable/ic_face4.xml Vector emotion stamp icon 4.
Week01/Yido/app/src/main/res/drawable/ic_face5.xml Vector emotion stamp icon 5.
Week01/Yido/app/src/main/res/drawable/ic_launcher_background.xml Adaptive icon background vector.
Week01/Yido/app/src/main/res/drawable/ic_launcher_foreground.xml Adaptive icon foreground vector.
Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml Adaptive launcher icon definition.
Week01/Yido/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml Adaptive round launcher icon definition.
Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher.webp Launcher icon bitmap (hdpi).
Week01/Yido/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp Round launcher icon bitmap (hdpi).
Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher.webp Launcher icon bitmap (mdpi).
Week01/Yido/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp Round launcher icon bitmap (mdpi).
Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher.webp Launcher icon bitmap (xhdpi).
Week01/Yido/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp Round launcher icon bitmap (xhdpi).
Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp Launcher icon bitmap (xxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp Round launcher icon bitmap (xxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp Launcher icon bitmap (xxxhdpi).
Week01/Yido/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp Round launcher icon bitmap (xxxhdpi).
Week01/Yido/app/src/test/java/com/example/yido/ExampleUnitTest.kt Default local unit test template.
Week01/Yido/app/src/androidTest/java/com/example/yido/ExampleInstrumentedTest.kt Default instrumented test template.
.idea/vcs.xml IDE VCS mapping config.
.idea/modules.xml IDE module configuration.
.idea/misc.xml IDE project JDK/language level config.
.idea/markdown.xml IDE Markdown plugin settings.
.idea/caches/deviceStreaming.xml IDE cache file containing device streaming selections.
Files not reviewed (5)
  • .idea/caches/deviceStreaming.xml: Language not supported
  • .idea/markdown.xml: Language not supported
  • .idea/misc.xml: Language not supported
  • .idea/modules.xml: Language not supported
  • .idea/vcs.xml: Language not supported

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +53 to +57
for (textView in textViews) {
textView.setTextColor(Color.BLACK)
}

selectedText.setTextColor(color)
Comment on lines +27 to +29
android:text="오늘 하루는 어땠나요?"
android:textColor="#000000"
android:textSize="38sp"
android:padding="8dp"
android:layout_marginStart="16dp"
android:layout_marginTop="26dp"
android:src="@drawable/ic_back"
Comment on lines +62 to +70
<ImageView
android:id="@+id/ic_face1"
android:layout_width="44dp"
android:layout_height="48.4dp"
android:layout_marginTop="30dp"
android:src="@drawable/ic_face1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_description" />
/captures
.externalNativeBuild
.cxx
local.properties
Comment on lines +1 to +6
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceStreaming">
<option name="deviceSelectionList">
<list>
<PersistentDeviceSelectionData>
@umckee5696 umckee5696 merged commit 6395567 into main Mar 16, 2026
@Dawon-Y
Copy link
Copy Markdown
Contributor

Dawon-Y commented Mar 21, 2026

안녕하세요! 1주차 과제 수행하시느라 고생 많으셨습니다💚
작성해주신 코드에 대한 리뷰를 정리했으니 참고하시면 좋을 것 같습니다.

총평

ViewBinding을 활용해 전반적으로 코드가 깔끔하고, 감정 선택도 단일 선택 UX로 잘 구현하셨습니다.


1. ConstraintLayout (배치 방식)

activity_main.xml은 각 뷰를 이전 요소의 bottom ↔ 다음 요소의 top으로 연결해서 위에서 아래로 내려오는 연속 배치 구조로 잘 작성되어 있습니다.
다만 화면 높이가 작은 기기에서는 감정 우표 영역이 아래에서 잘릴 수 있는(overflow) 가능성이 있어, 추후에는 NestedScrollView 적용 등도 한 번 고려해보면 좋겠습니다.


2. Chain

현재 XML에는 app:layout_constraintVertical_chainStyle 같은 설정이 없어서, 뷰들이 체인으로 묶여 있지는 않습니다.
Chain은 여러 뷰를 한 묶음으로 연결해 간격/정렬(spread, packed 등) 을 조절하는 기능이라, 나중에 화면 크기 대응이나 간격을 더 깔끔하게 정리하고 싶을 때 참고하면 좋습니다.


3. Kotlin 코드

selectEmotion()에서 전체 텍스트 색을 먼저 초기화한 뒤 선택한 텍스트만 색을 바꾸는 방식이라 선택이 누적되지 않고 단일 선택이 잘 동작합니다. 👍

(선택 개선)
아이콘뿐 아니라 텍스트도 클릭 가능하게 하면 터치 UX가 더 좋아질 수 있고, 색상 값은 추후 colors.xml로 분리하면 관리가 더 편해질 수 있습니다.


추가로 ViewBinding을 사용했다면 buildFeatures { viewBinding true }가 Gradle에 켜져 있는지도 함께 확인해 주세요!


코드 리뷰 확인해보시고 궁금한 점 있으면 언제든지 말씀해주세요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants